import Vue from 'vue';
import VueRouter from 'vue-router';
//引入路由配置
import routes from './routes';
//使用路由插件
Vue.use(VueRouter);


//先把VueRouter原型对象的push和replace保存一份
let originPush = VueRouter.prototype.push;
let originReplace = VueRouter.prototype.replace;
/** 重写push|replace
 * params：
 *  location：告诉原来的push函数往哪里跳转(传递哪些参数)
 *  resolve：成功的回调
 *  reject：失败的回调
 */
VueRouter.prototype.push = function(location,resolve,reject){
    //函数上下文为VueRouter类的一个实例,这里this指向的是push函数的调用者,也就是VueRouter实例
    if(resolve && reject){//如果传了成功和失败的回调,就是直接使用
        //将this指向指回VueRouter实例
        originPush.call(this,location,resolve,reject);
    }else{//如果没有传递成功或失败的回调,就默认传递一个
        originPush.call(this,location,()=>{},()=>{});
    }
}
VueRouter.prototype.replace = function(location,resolve,reject){
    if(resolve && reject){
        originReplace.call(this,location,resolve,reject);
    }else{
        originReplace.call(this,location,()=>{},()=>{});
    }
}

//配置路由
let router = new VueRouter({
    routes,//配置路由    
    scrollBehavior(to,from,savePosition){//滚动行为
        //返回的这个y=0，代表的滚动条在最上面
        return {y: 0};
    }
})

//暴露路由器
export default router;